package com.lanou.activity.controller;

import com.lanou.activity.Service.PlainInfoRestService;
import com.lanou.activity.utils.ResultUtil;
import com.lanou.activity.utils.ToolUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.annotation.Resource;
import java.util.*;

@Controller
@RequestMapping("/pir")
public class plainInfoRest {

    private static final Logger logger = LoggerFactory.getLogger(plainInfoRest.class);

    @Resource
    private PlainInfoRestService plainInfoRestService;

    /**
     * @param
     * @description 接口  查询所有的商品可用的企划信息
     * @author 66
     * @date 17/9/26
     */
    @PostMapping("plainInfoRest")
    @ResponseBody
    public Map<String, Object> rest(@RequestParam("prdNo") String prd_no) {
        List<Map<String,Object>> list1=plainInfoRestService.selectSpno(prd_no);

        System.out.println(list1.toString());

//        map中就是企划编号  sp_no=xxxxxx
        if (list1 == null || list1.size() == 0) {
            List listAll = new ArrayList();
            Map mapAll = new HashMap();
            mapAll.put("sp_name", "没有此类商品的企划信息");
            listAll.add(0, mapAll);
            return ResultUtil.success(listAll);
        } else {
            Map<String, Object> map1 = list1.get(0);
//         根据查询出来的企划编号   sp_no    在企划信息表中查询对应的信息
            List<Map<String, Object>> list = plainInfoRestService.selectPlainInfoRest(map1);
            Map<String, Object> map = list.get(0);
//           企划活动名称
            String spName = (String) map.get("sp_name");
//           促销活动的编号
            String conNo = (String) map.get("con_no");
//           优惠信息的编号
            String disNo = (String) map.get("dis_no");
//           买赠信息的编号
            String gNo = (String) map.get("g_no");
//           限额信息的编号
            String lmtNo = (String) map.get("lmt_no");
//           开始时间
            Date startDate = (Date) map.get("start_date");
//           结束时间
            Date endDate = (Date) map.get("end_date");

//       根据con_no在促销条件表sale_cdn_info中查询   促销条件名称con_name等相关信息
            List<Map<String, Object>> list2 = plainInfoRestService.selectConname(conNo);
            Map<String, Object> map2 = list2.get(0);

//       根据dis_no 在优惠信息表discount_info中查询   优惠名称dis_name    优惠值dis_value
            List<Map<String, Object>> list3 = plainInfoRestService.selectDisname(disNo);
            if (list3 == null || list3.size() == 0) {
                Map<String, Object> map3 = new HashMap<>();
                map3.put("dis_no", ' ');
            } else {
                Map<String, Object> map3 = list3.get(0);
            }

//       根据买赠的编号 g_no 在买赠信息表slgf_info中查询   买赠名称g_name   赠品编号g_prd_no
            List<Map<String, Object>> list4 = plainInfoRestService.selectGname(gNo);
            if (list4 == null || list4.size() == 0) {
                Map<String, Object> map4 = new HashMap<>();
                map4.put("g_no", ' ');
            } else {
                Map<String, Object> map4 = list4.get(0);
//          商品类型编号
                String pro_no = (String) map4.get("p_prd_no");
//          商品详细id
                String pro_dtl_id = (String) map4.get("g_prd_no");
                Map mapParams = new HashMap();
                mapParams.put("pro_dtl_id", pro_dtl_id);
//          获取商品类型名称
                List<Map<String, Object>> list5 = plainInfoRestService.selectPrdname(pro_no);
                if (list5 == null || list5.size() == 0) {
                    map4.put("p_prd_no", ' ');
                    map4.put("g_prd_no", ' ');
                } else {
                    Map<String, Object> map5 = list5.get(0);
//         商品类型名称
                    String prdName = (String) map5.get("prd_name");
//          获取商品详细名称
                    List<Map<String, Object>> list6 = (List<Map<String, Object>>) ToolUtil.callUrl("http://10.90.86.250:8888/prd/getAll2", mapParams);
                    Map<String, Object> map6 = list6.get(0);
//            商品详细名称
                    String dtlName = (String) map6.get("prd_name");
                    map4.put("p_prd_no", prdName);
                    map4.put("g_prd_no", dtlName);
                }
            }
//       根据限额的编号   lmt_no   查询  限额名字lmt_name 信息
            List<Map<String, Object>> list7 = plainInfoRestService.selectLmt(lmtNo);
            Map<String, Object> map7 = list7.get(0);

            //           整合数据
            Map mapAll = new HashMap();
            //           企划活动名称
            mapAll.put("sp_name", spName);
            //           促销活动的信息
            mapAll.put("con_no", list2);
            //           优惠的信息
            mapAll.put("dis_no", list3);
            //           买赠信息的信息
            mapAll.put("g_no", list4);
            //           限额信息的编号
            mapAll.put("lmt_no", list7);
            //           开始时间
            mapAll.put("start_date", startDate);
            //           结束时间
            mapAll.put("end_date", endDate);
            List listAll = new ArrayList();
            listAll.add(0, mapAll);
            return ResultUtil.success(listAll);
        }
    }
}
